import './polyfills.js'
import {REVISION} from './constants.js'

export {WebGLMultisampleRenderTarget} from './renderers/WebGLMultisampleRenderTarget.js'
export {WebGLCubeRenderTarget} from './renderers/WebGLCubeRenderTarget.js'
export {WebGLRenderTarget} from './renderers/WebGLRenderTarget.js'
export {WebGLRenderer} from './renderers/WebGLRenderer.js'
export {WebGL1Renderer} from './renderers/WebGL1Renderer.js'
export {ShaderLib} from './renderers/shaders/ShaderLib.js'
export {UniformsLib} from './renderers/shaders/UniformsLib.js'
export {UniformsUtils} from './renderers/shaders/UniformsUtils.js'
export {ShaderChunk} from './renderers/shaders/ShaderChunk.js'
export {FogExp2} from './scenes/FogExp2.js'
export {Fog} from './scenes/Fog.js'
export {Scene} from './scenes/Scene.js'
export {Sprite} from './objects/Sprite.js'
export {LOD} from './objects/LOD.js'
export {SkinnedMesh} from './objects/SkinnedMesh.js'
export {Skeleton} from './objects/Skeleton.js'
export {Bone} from './objects/Bone.js'
export {Mesh} from './objects/Mesh.js'
export {InstancedMesh} from './objects/InstancedMesh.js'
export {LineSegments} from './objects/LineSegments.js'
export {LineLoop} from './objects/LineLoop.js'
export {Line} from './objects/Line.js'
export {Points} from './objects/Points.js'
export {Group} from './objects/Group.js'
export {VideoTexture} from './textures/VideoTexture.js'
export {DataTexture} from './textures/DataTexture.js'
export {DataTexture2DArray} from './textures/DataTexture2DArray.js'
export {DataTexture3D} from './textures/DataTexture3D.js'
export {CompressedTexture} from './textures/CompressedTexture.js'
export {CubeTexture} from './textures/CubeTexture.js'
export {CanvasTexture} from './textures/CanvasTexture.js'
export {DepthTexture} from './textures/DepthTexture.js'
export {Texture} from './textures/Texture.js'
export * from './geometries/Geometries.js'
export * from './materials/Materials.js'
export {AnimationLoader} from './loaders/AnimationLoader.js'
export {CompressedTextureLoader} from './loaders/CompressedTextureLoader.js'
export {CubeTextureLoader} from './loaders/CubeTextureLoader.js'
export {DataTextureLoader} from './loaders/DataTextureLoader.js'
export {TextureLoader} from './loaders/TextureLoader.js'
export {ObjectLoader} from './loaders/ObjectLoader.js'
export {MaterialLoader} from './loaders/MaterialLoader.js'
export {BufferGeometryLoader} from './loaders/BufferGeometryLoader.js'
export {DefaultLoadingManager, LoadingManager} from './loaders/LoadingManager.js'
export {ImageLoader} from './loaders/ImageLoader.js'
export {ImageBitmapLoader} from './loaders/ImageBitmapLoader.js'
export {FontLoader} from './loaders/FontLoader.js'
export {FileLoader} from './loaders/FileLoader.js'
export {Loader} from './loaders/Loader.js'
export {LoaderUtils} from './loaders/LoaderUtils.js'
export {Cache} from './loaders/Cache.js'
export {AudioLoader} from './loaders/AudioLoader.js'
export {SpotLight} from './lights/SpotLight.js'
export {PointLight} from './lights/PointLight.js'
export {RectAreaLight} from './lights/RectAreaLight.js'
export {HemisphereLight} from './lights/HemisphereLight.js'
export {HemisphereLightProbe} from './lights/HemisphereLightProbe.js'
export {DirectionalLight} from './lights/DirectionalLight.js'
export {AmbientLight} from './lights/AmbientLight.js'
export {AmbientLightProbe} from './lights/AmbientLightProbe.js'
export {Light} from './lights/Light.js'
export {LightProbe} from './lights/LightProbe.js'
export {StereoCamera} from './cameras/StereoCamera.js'
export {PerspectiveCamera} from './cameras/PerspectiveCamera.js'
export {OrthographicCamera} from './cameras/OrthographicCamera.js'
export {CubeCamera} from './cameras/CubeCamera.js'
export {ArrayCamera} from './cameras/ArrayCamera.js'
export {Camera} from './cameras/Camera.js'
export {AudioListener} from './audio/AudioListener.js'
export {PositionalAudio} from './audio/PositionalAudio.js'
export {AudioContext} from './audio/AudioContext.js'
export {AudioAnalyser} from './audio/AudioAnalyser.js'
export {Audio} from './audio/Audio.js'
export {VectorKeyframeTrack} from './animation/tracks/VectorKeyframeTrack.js'
export {StringKeyframeTrack} from './animation/tracks/StringKeyframeTrack.js'
export {QuaternionKeyframeTrack} from './animation/tracks/QuaternionKeyframeTrack.js'
export {NumberKeyframeTrack} from './animation/tracks/NumberKeyframeTrack.js'
export {ColorKeyframeTrack} from './animation/tracks/ColorKeyframeTrack.js'
export {BooleanKeyframeTrack} from './animation/tracks/BooleanKeyframeTrack.js'
export {PropertyMixer} from './animation/PropertyMixer.js'
export {PropertyBinding} from './animation/PropertyBinding.js'
export {KeyframeTrack} from './animation/KeyframeTrack.js'
export {AnimationUtils} from './animation/AnimationUtils.js'
export {AnimationObjectGroup} from './animation/AnimationObjectGroup.js'
export {AnimationMixer} from './animation/AnimationMixer.js'
export {AnimationClip} from './animation/AnimationClip.js'
export {Uniform} from './core/Uniform.js'
export {InstancedBufferGeometry} from './core/InstancedBufferGeometry.js'
export {BufferGeometry} from './core/BufferGeometry.js'
export {Geometry} from './core/Geometry.js'
export {InterleavedBufferAttribute} from './core/InterleavedBufferAttribute.js'
export {InstancedInterleavedBuffer} from './core/InstancedInterleavedBuffer.js'
export {InterleavedBuffer} from './core/InterleavedBuffer.js'
export {InstancedBufferAttribute} from './core/InstancedBufferAttribute.js'
export {GLBufferAttribute} from './core/GLBufferAttribute.js'
export * from './core/BufferAttribute.js'
export {Face3} from './core/Face3.js'
export {Object3D} from './core/Object3D.js'
export {Raycaster} from './core/Raycaster.js'
export {Layers} from './core/Layers.js'
export {EventDispatcher} from './core/EventDispatcher.js'
export {Clock} from './core/Clock.js'
export {QuaternionLinearInterpolant} from './math/interpolants/QuaternionLinearInterpolant.js'
export {LinearInterpolant} from './math/interpolants/LinearInterpolant.js'
export {DiscreteInterpolant} from './math/interpolants/DiscreteInterpolant.js'
export {CubicInterpolant} from './math/interpolants/CubicInterpolant.js'
export {Interpolant} from './math/Interpolant.js'
export {Triangle} from './math/Triangle.js'
export {MathUtils} from './math/MathUtils.js'
export {Spherical} from './math/Spherical.js'
export {Cylindrical} from './math/Cylindrical.js'
export {Plane} from './math/Plane.js'
export {Frustum} from './math/Frustum.js'
export {Sphere} from './math/Sphere.js'
export {Ray} from './math/Ray.js'
export {Matrix4} from './math/Matrix4.js'
export {Matrix3} from './math/Matrix3.js'
export {Box3} from './math/Box3.js'
export {Box2} from './math/Box2.js'
export {Line3} from './math/Line3.js'
export {Euler} from './math/Euler.js'
export {Vector4} from './math/Vector4.js'
export {Vector3} from './math/Vector3.js'
export {Vector2} from './math/Vector2.js'
export {Quaternion} from './math/Quaternion.js'
export {Color} from './math/Color.js'
export {SphericalHarmonics3} from './math/SphericalHarmonics3.js'
export {ImmediateRenderObject} from './extras/objects/ImmediateRenderObject.js'
export {SpotLightHelper} from './helpers/SpotLightHelper.js'
export {SkeletonHelper} from './helpers/SkeletonHelper.js'
export {PointLightHelper} from './helpers/PointLightHelper.js'
export {HemisphereLightHelper} from './helpers/HemisphereLightHelper.js'
export {GridHelper} from './helpers/GridHelper.js'
export {PolarGridHelper} from './helpers/PolarGridHelper.js'
export {DirectionalLightHelper} from './helpers/DirectionalLightHelper.js'
export {CameraHelper} from './helpers/CameraHelper.js'
export {BoxHelper} from './helpers/BoxHelper.js'
export {Box3Helper} from './helpers/Box3Helper.js'
export {PlaneHelper} from './helpers/PlaneHelper.js'
export {ArrowHelper} from './helpers/ArrowHelper.js'
export {AxesHelper} from './helpers/AxesHelper.js'
export * from './extras/curves/Curves.js'
export {Shape} from './extras/core/Shape.js'
export {Path} from './extras/core/Path.js'
export {ShapePath} from './extras/core/ShapePath.js'
export {Font} from './extras/core/Font.js'
export {CurvePath} from './extras/core/CurvePath.js'
export {Curve} from './extras/core/Curve.js'
export {ImageUtils} from './extras/ImageUtils.js'
export {ShapeUtils} from './extras/ShapeUtils.js'
export {PMREMGenerator} from './extras/PMREMGenerator.js'
export {WebGLUtils} from './renderers/webgl/WebGLUtils.js'
export * from './constants.js'
export * from './Three.Legacy.js'

if (typeof __THREE_DEVTOOLS__ !== 'undefined') {
  /* eslint-disable no-undef */
  __THREE_DEVTOOLS__.dispatchEvent(
    new CustomEvent('register', {
      detail: {
        revision: REVISION,
      },
    })
  )
  /* eslint-enable no-undef */
}
